39#ifdef PREINIT_SUPPORTED
43#ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
49#include "drv_digital_out.h"
50#include "drv_digital_in.h"
51#include "drv_i2c_master.h"
74#define BLDCFOC2_REG_EEPROM_8 0x08
75#define BLDCFOC2_REG_EEPROM_9 0x09
76#define BLDCFOC2_REG_EEPROM_10 0x0A
77#define BLDCFOC2_REG_EEPROM_11 0x0B
78#define BLDCFOC2_REG_EEPROM_12 0x0C
79#define BLDCFOC2_REG_EEPROM_13 0x0D
80#define BLDCFOC2_REG_EEPROM_14 0x0E
81#define BLDCFOC2_REG_EEPROM_15 0x0F
82#define BLDCFOC2_REG_EEPROM_16 0x10
83#define BLDCFOC2_REG_EEPROM_17 0x11
84#define BLDCFOC2_REG_EEPROM_18 0x12
85#define BLDCFOC2_REG_EEPROM_19 0x13
86#define BLDCFOC2_REG_EEPROM_20 0x14
87#define BLDCFOC2_REG_EEPROM_21 0x15
88#define BLDCFOC2_REG_EEPROM_22 0x16
89#define BLDCFOC2_REG_EEPROM_23 0x17
90#define BLDCFOC2_REG_EEPROM_24 0x18
91#define BLDCFOC2_REG_EEPROM_25 0x19
92#define BLDCFOC2_REG_EEPROM_26 0x1A
93#define BLDCFOC2_REG_EEPROM_27 0x1B
94#define BLDCFOC2_REG_EEPROM_28 0x1C
95#define BLDCFOC2_REG_EEPROM_29 0x1D
96#define BLDCFOC2_REG_EEPROM_30 0x1E
97#define BLDCFOC2_REG_EEPROM_31 0x1F
98#define BLDCFOC2_REG_EEPROM_32 0x20
99#define BLDCFOC2_REG_EEPROM_33 0x21
100#define BLDCFOC2_REG_EEPROM_34 0x22
101#define BLDCFOC2_REG_EEPROM_35 0x23
102#define BLDCFOC2_REG_EEPROM_36 0x24
103#define BLDCFOC2_REG_EEPROM_37 0x25
104#define BLDCFOC2_REG_EEPROM_38 0x26
105#define BLDCFOC2_REG_EEPROM_39 0x27
106#define BLDCFOC2_REG_EEPROM_40 0x28
107#define BLDCFOC2_REG_EEPROM_41 0x29
108#define BLDCFOC2_REG_EEPROM_42 0x2A
109#define BLDCFOC2_REG_EEPROM_43 0x2B
110#define BLDCFOC2_REG_EEPROM_44 0x2C
111#define BLDCFOC2_REG_EEPROM_45 0x2D
112#define BLDCFOC2_REG_EEPROM_46 0x2E
113#define BLDCFOC2_REG_EEPROM_47 0x2F
114#define BLDCFOC2_REG_EEPROM_48 0x30
115#define BLDCFOC2_REG_EEPROM_49 0x31
116#define BLDCFOC2_REG_EEPROM_50 0x32
117#define BLDCFOC2_REG_EEPROM_51 0x33
118#define BLDCFOC2_REG_EEPROM_52 0x34
119#define BLDCFOC2_REG_EEPROM_53 0x35
120#define BLDCFOC2_REG_EEPROM_54 0x36
121#define BLDCFOC2_REG_EEPROM_55 0x37
122#define BLDCFOC2_REG_EEPROM_56 0x38
123#define BLDCFOC2_REG_EEPROM_57 0x39
124#define BLDCFOC2_REG_EEPROM_58 0x3A
125#define BLDCFOC2_REG_EEPROM_59 0x3B
126#define BLDCFOC2_REG_EEPROM_60 0x3C
127#define BLDCFOC2_REG_EEPROM_61 0x3D
128#define BLDCFOC2_REG_EEPROM_62 0x3E
129#define BLDCFOC2_REG_EEPROM_63 0x3F
130#define BLDCFOC2_REG_EEPROM_CTRL 0xBF
131#define BLDCFOC2_REG_EEPROM_ADDR 0xC0
132#define BLDCFOC2_REG_EEPROM_DATA 0xC1
133#define BLDCFOC2_REG_EEPROM_ACCESS 0xC4
152#define BLDCFOC2_EEPROM_8 0x0047FF
153#define BLDCFOC2_EEPROM_9 0x0000FA
154#define BLDCFOC2_EEPROM_10 0x0067FF
155#define BLDCFOC2_EEPROM_11 0x000000
156#define BLDCFOC2_EEPROM_12 0x007FF3
157#define BLDCFOC2_EEPROM_13 0x000109
158#define BLDCFOC2_EEPROM_14 0x000E2A
159#define BLDCFOC2_EEPROM_15 0x006270
160#define BLDCFOC2_EEPROM_16 0x00006C
161#define BLDCFOC2_EEPROM_17 0x002457
162#define BLDCFOC2_EEPROM_18 0x00DA0D
163#define BLDCFOC2_EEPROM_19 0x007701
164#define BLDCFOC2_EEPROM_20 0x003238
165#define BLDCFOC2_EEPROM_21 0x000060
166#define BLDCFOC2_EEPROM_22 0x006007
167#define BLDCFOC2_EEPROM_23 0x00041E
168#define BLDCFOC2_EEPROM_24 0x000006
169#define BLDCFOC2_EEPROM_25 0x000014
170#define BLDCFOC2_EEPROM_26 0x000012
171#define BLDCFOC2_EEPROM_27 0x000000
172#define BLDCFOC2_EEPROM_28 0x000DA1
173#define BLDCFOC2_EEPROM_29 0x000011
174#define BLDCFOC2_EEPROM_30 0x000000
175#define BLDCFOC2_EEPROM_31 0x00007E
176#define BLDCFOC2_EEPROM_32 0x000000
177#define BLDCFOC2_EEPROM_33 0x000000
178#define BLDCFOC2_EEPROM_34 0x000000
179#define BLDCFOC2_EEPROM_35 0x000000
180#define BLDCFOC2_EEPROM_36 0x000000
181#define BLDCFOC2_EEPROM_37 0x000000
182#define BLDCFOC2_EEPROM_38 0x000000
183#define BLDCFOC2_EEPROM_39 0x000000
184#define BLDCFOC2_EEPROM_40 0x000000
185#define BLDCFOC2_EEPROM_41 0x000000
186#define BLDCFOC2_EEPROM_42 0x000000
187#define BLDCFOC2_EEPROM_43 0x000000
188#define BLDCFOC2_EEPROM_44 0x000000
189#define BLDCFOC2_EEPROM_45 0x000000
190#define BLDCFOC2_EEPROM_46 0x000000
191#define BLDCFOC2_EEPROM_47 0x000000
192#define BLDCFOC2_EEPROM_48 0x000000
193#define BLDCFOC2_EEPROM_49 0x000000
194#define BLDCFOC2_EEPROM_50 0x000000
195#define BLDCFOC2_EEPROM_51 0x000000
196#define BLDCFOC2_EEPROM_52 0x000000
197#define BLDCFOC2_EEPROM_53 0x000000
198#define BLDCFOC2_EEPROM_54 0x000000
199#define BLDCFOC2_EEPROM_55 0x000000
200#define BLDCFOC2_EEPROM_56 0x000000
201#define BLDCFOC2_EEPROM_57 0x000000
202#define BLDCFOC2_EEPROM_58 0x000000
203#define BLDCFOC2_EEPROM_59 0x000000
204#define BLDCFOC2_EEPROM_60 0x000000
205#define BLDCFOC2_EEPROM_61 0x000000
206#define BLDCFOC2_EEPROM_62 0x000000
207#define BLDCFOC2_EEPROM_63 0x000000
213#define BLDCFOC2_EEPROM_CTRL_RD 0x000008
214#define BLDCFOC2_EEPROM_CTRL_WR 0x000004
215#define BLDCFOC2_EEPROM_CTRL_ER 0x000002
216#define BLDCFOC2_EEPROM_CTRL_EN 0x000001
217#define BLDCFOC2_EEPROM_ACCESS_LOCK 0x000000
218#define BLDCFOC2_EEPROM_ACCESS_UNLOCK 0x000001
219#define BLDCFOC2_EEPROM_DATA_CLEAR 0x000000
220#define BLDCFOC2_EEPROM_SHADOW_OFFSET 64
226#define BLDCFOC2_DIR_CCW 0
227#define BLDCFOC2_DIR_CW 1
233#define BLDCFOC2_SPEED_MIN 10
234#define BLDCFOC2_SPEED_START 15
235#define BLDCFOC2_SPEED_MAX 50
236#define BLDCFOC2_SPEED_TO_DUTY 100
242#define BLDCFOC2_PWM_FREQ 20000
243#define BLDCFOC2_PWM_ZERO_DUTY 0.0
250#define BLDCFOC2_DEVICE_ADDRESS 0x55
268#define BLDCFOC2_MAP_MIKROBUS( cfg, mikrobus ) \
269 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
270 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
271 cfg.pwm = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
272 cfg.fgo = MIKROBUS( mikrobus, MIKROBUS_AN ); \
273 cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST ); \
274 cfg.dir = MIKROBUS( mikrobus, MIKROBUS_CS ); \
275 cfg.fault = MIKROBUS( mikrobus, MIKROBUS_INT );
bldcfoc2_return_value_t
BLDC FOC 2 Click return value data.
Definition bldcfoc2.h:335
@ BLDCFOC2_ERROR
Definition bldcfoc2.h:337
@ BLDCFOC2_OK
Definition bldcfoc2.h:336
err_t bldcfoc2_read_regs(bldcfoc2_t *ctx, uint8_t reg, uint32_t *data_out, uint8_t len)
BLDC FOC 2 read multiple registers function.
err_t bldcfoc2_eeprom_write(bldcfoc2_t *ctx, uint8_t addr, uint32_t data_in)
BLDC FOC 2 EEPROM write function.
void bldcfoc2_pull_brake(bldcfoc2_t *ctx)
BLDC FOC 2 pull brake function.
err_t bldcfoc2_pwm_stop(bldcfoc2_t *ctx)
BLDC FOC 2 stop PWM function.
uint8_t bldcfoc2_get_fault_pin(bldcfoc2_t *ctx)
BLDC FOC 2 get FAULT pin state function.
err_t bldcfoc2_eeprom_read(bldcfoc2_t *ctx, uint8_t addr, uint32_t *data_out)
BLDC FOC 2 EEPROM read function.
err_t bldcfoc2_default_cfg(bldcfoc2_t *ctx)
BLDC FOC 2 default configuration function.
err_t bldcfoc2_write_reg(bldcfoc2_t *ctx, uint8_t reg, uint32_t data_in)
BLDC FOC 2 write register function.
uint8_t bldcfoc2_get_fgo_pin(bldcfoc2_t *ctx)
BLDC FOC 2 get FGO pin state function.
err_t bldcfoc2_eeprom_set_config(bldcfoc2_t *ctx)
BLDC FOC 2 EEPROM default config function.
err_t bldcfoc2_read_reg(bldcfoc2_t *ctx, uint8_t reg, uint32_t *data_out)
BLDC FOC 2 read register function.
void bldcfoc2_release_brake(bldcfoc2_t *ctx)
BLDC FOC 2 release brake function.
void bldcfoc2_switch_direction(bldcfoc2_t *ctx)
BLDC FOC 2 switch direction function.
err_t bldcfoc2_eeprom_access_lock(bldcfoc2_t *ctx)
BLDC FOC 2 EEPROM access lock function.
err_t bldcfoc2_init(bldcfoc2_t *ctx, bldcfoc2_cfg_t *cfg)
BLDC FOC 2 initialization function.
err_t bldcfoc2_eeprom_erase(bldcfoc2_t *ctx, uint8_t addr)
BLDC FOC 2 EEPROM erase function.
void bldcfoc2_cfg_setup(bldcfoc2_cfg_t *cfg)
BLDC FOC 2 configuration object setup function.
err_t bldcfoc2_eeprom_access_unlock(bldcfoc2_t *ctx)
BLDC FOC 2 EEPROM access unlock function.
err_t bldcfoc2_set_duty_cycle(bldcfoc2_t *ctx, float duty_cycle)
BLDC FOC 2 set duty cycle function.
err_t bldcfoc2_pwm_start(bldcfoc2_t *ctx)
BLDC FOC 2 start PWM function.
void bldcfoc2_set_direction(bldcfoc2_t *ctx, uint8_t dir)
BLDC FOC 2 set direction function.
BLDC FOC 2 Click configuration object.
Definition bldcfoc2.h:311
pin_name_t fgo
Definition bldcfoc2.h:318
uint32_t i2c_speed
Definition bldcfoc2.h:325
uint32_t dev_pwm_freq
Definition bldcfoc2.h:324
pin_name_t dir
Definition bldcfoc2.h:320
pin_name_t scl
Definition bldcfoc2.h:313
pin_name_t pwm
Definition bldcfoc2.h:315
pin_name_t sda
Definition bldcfoc2.h:314
pin_name_t rst
Definition bldcfoc2.h:319
pin_name_t fault
Definition bldcfoc2.h:321
uint8_t i2c_address
Definition bldcfoc2.h:326
BLDC FOC 2 Click context object.
Definition bldcfoc2.h:285
digital_in_t fgo
Definition bldcfoc2.h:291
uint32_t pwm_freq
Definition bldcfoc2.h:302
i2c_master_t i2c
Definition bldcfoc2.h:296
digital_out_t rst
Definition bldcfoc2.h:287
digital_in_t fault
Definition bldcfoc2.h:292
uint8_t slave_address
Definition bldcfoc2.h:299
pwm_t pwm
Definition bldcfoc2.h:295
digital_out_t dir
Definition bldcfoc2.h:288